package com.flamezebra.kotlin

// 声明读&写变量格式：var 变量名：数据类型 = 赋值
// 声明只读变量格式： val 变量名：变量类型 = 赋值

// Kotlin数据类型：
// String:  字符串     "Hello"
// Char:    字符      'C'
// Boolean: 布尔值     true/ false
// Int:     整数       5
// Double:  浮点数     1.1
// List:    列表      1, 1.23, "Rick"
// Set:     集合      "Rose", "Rick"
// Map:     Map      "small" to 5, "big" to 1000

// 类型推断：可以根据赋值的类型，推断出该变量的类型

//编译时常量：1. 编译时常量使用const关键字配合val定义，这是真正的“常量”，const不能写在函数内，详细见第2条规则。
//          2. 只读变量val并非绝对只读，编译时常量只能在函数之外定义，因为编译时常量必须在编译时赋值，而函数是在运行时才调用，
//          函数内的变量也是在运行时赋值，编译时常量需要在这些变量赋值前就存在。
//          3. 编译时常量只能是常见的基本数据类型：String, Int, Double, Float, Long, Short, Byte, Char, Boolean
//          4. 编译时常量是一个全局性质的常量，所以不能在同一个工程的不同文件有同名的存在

// 编译时常量
const val MAX = 100
fun main() {
    // 可修改变量
    var i:Int = 10
    // 只读变量
    val d:Double = 3.14
    // 类型推断
    var x = 1

}